﻿using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Dysmsapi.Model.V20170525;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MSM
{
    public class AliyunHelper
    {

        static String product = "Dysmsapi";//短信API产品名称
        static String domain = "dysmsapi.aliyuncs.com";//短信API产品域名
        static String accessId = "LTAIU79TVCTyWVmp";
        static String accessSecret = "2cXKZiWd4h9nx5G3sRNvqspE0AWaHS";
        static String regionIdForPop = "cn-hangzhou";

        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="Code">验证码</param>
        /// <param name="Phone">手机号，多个手机请以“逗号”进行分割</param>
        /// <returns></returns>
        public static object SendMsg(string Phone,string Code)
        {


            IClientProfile profile = DefaultProfile.GetProfile(regionIdForPop, accessId, accessSecret);
            DefaultProfile.AddEndpoint(regionIdForPop, regionIdForPop, product, domain);
            IAcsClient acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request = new SendSmsRequest();
            SendSmsResponse sendSmsResponse = null;
            try
            {

                //接收短信的手机号码。 
                //格式： 
                //国内短信：11位手机号码，例如15951955195。
                //国际/港澳台消息：国际区号+号码，例如85200000000。
                //支持对多个手机号码发送短信，手机号码之间以英文逗号（,）分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。
                request.PhoneNumbers = Phone;

                //短信签名名称。请在控制台签名管理页面签名名称一列查看。
                request.SignName = "OA短信";

                //短信模板ID。请在控制台模板管理页面模板CODE一列查看。
                request.TemplateCode = "SMS_166375189";

                //短信模板变量对应的实际值，JSON格式。
                request.TemplateParam = Code;

                //外部流水扩展字段。可以为空
                request.OutId = "";

                //请求失败这里会抛ClientException异常
                sendSmsResponse = acsClient.GetAcsResponse(request);

                return new {Code=sendSmsResponse.Code,Message=sendSmsResponse.Message };

            }
            catch (ServerException e)
            {
                System.Console.WriteLine("ServerException");
            }
            catch (ClientException e)
            {
                System.Console.WriteLine("ClientException");
            }
            return sendSmsResponse;
        }
    }
}